//
//  AppendNoonBlanksVC+AppendNoodBottomRow.m
//  PlanDemo
//
//  Created by 在成长开发 on 2025/9/10.
//

#import "CellModel+AppendNoodBottomRow.h"
#import "CellModel.h"

@implementation CellModel (AppendNoodBottomRow)

/// 不考虑最后一行是什么就是往上下午的最后一行后面再添加一行
+ (NSMutableArray *)appendNoonBottomCell {
    NSMutableArray * result = [CellModel fifteenWeek];
    
    // 找到上午
    [self amAppendRow:result];
    
    
    // 找到下午
    [self pmAppendRow:result];
    
    return result;
}

+ (void)amAppendRow:(NSMutableArray *)result {
    CellModel * am;
    for (CellModel * obj in result) {
        if (obj.type == CellType_Fixed && [obj.content isEqualToString:@"上午"]) {
            am = obj;
            break;
        }
    }
    
    if (am == nil) {
        return;
    }
    // 定位行号
    NSInteger startRow = am.row + am.useRow;
    // 找到上一行是否有活动
    BOOL lastRowContainActivity = NO;
    for (CellModel * model in result) {
        if (model.row + model.useRow != startRow) {
            continue;
        }
        if (model.type == CellType_Activity) {
            lastRowContainActivity = YES;
            break;
        }
    }
    // 如果上一行有活动，那新增加的这一行的useRow就是4，上午useRow加4，row 大于等于 startRow的单元格，row都需要增加4
    // 如果上一行没有活动，那新增加的这一行的useRow就是1，上午useRow加1，row 大于等于 startRow的单元格，row都需要增加1
    NSInteger appendRow = lastRowContainActivity ? kActivityRowStep : kTextRowStep;
    
    [CellModel updateCells:result noon:am afterRow:startRow appendRow:appendRow];
    
    // 生成最后一行的单元格数组
    // style 1: 生成和上一行相同合并样式的单元格
    [CellModel createItemsSameAsLast:result startRow:startRow appendRow:appendRow];
    
    // style 2: 生成打散单元格的样式的行
//    [CellModel createItemsNoMerge:result startRow:startRow appendRow:appendRow];
    
}

+ (void)pmAppendRow:(NSMutableArray *)result {
    CellModel * pm;
    for (CellModel * obj in result) {
        if (obj.type == CellType_Fixed && [obj.content isEqualToString:@"下午"]) {
            pm = obj;
            break;
        }
    }
    
    if (pm == nil) {
        return;
    }
    // 定位行号
    NSInteger startRow = pm.row + pm.useRow;
    // 找到上一行是否有活动
    BOOL lastRowContainActivity = NO;
    for (CellModel * model in result) {
        if (model.row + model.useRow != startRow) {
            continue;
        }
        if (model.type == CellType_Activity) {
            lastRowContainActivity = YES;
            break;
        }
    }
    // 如果上一行有活动，那新增加的这一行的useRow就是4，上午useRow加4，row 大于等于 startRow的单元格，row都需要增加4
    // 如果上一行没有活动，那新增加的这一行的useRow就是1，上午useRow加1，row 大于等于 startRow的单元格，row都需要增加1
    NSInteger appendRow = lastRowContainActivity ? kActivityRowStep : kTextRowStep;
    [CellModel updateCells:result noon:pm afterRow:startRow appendRow:appendRow];
    
    // 生成最后一行的单元格数组
    // style 1: 生成和上一行相同合并样式的单元格
    [CellModel createItemsSameAsLast:result startRow:startRow appendRow:appendRow];
    
    // style 2: 生成打散单元格的样式的行
//    [CellModel createItemsNoMerge:result startRow:startRow appendRow:appendRow];
    
    
    
}




@end
